'use client'
import type { FC, SVGProps } from 'react'
import React, { useEffect } from 'react'
import { usePathname } from 'next/navigation'
import useSWR from 'swr'
import { useTranslation } from 'react-i18next'
import classNames from 'classnames'
import { useBoolean } from 'ahooks'
import {
  Cog8ToothIcon,
  // CommandLineIcon,
  Squares2X2Icon,
  // eslint-disable-next-line sort-imports
  PuzzlePieceIcon,
  DocumentTextIcon,
  PaperClipIcon,
  QuestionMarkCircleIcon,
} from '@heroicons/react/24/outline'
import {
  Cog8ToothIcon as Cog8ToothSolidIcon,
  // CommandLineIcon as CommandLineSolidIcon,
  DocumentTextIcon as DocumentTextSolidIcon,
} from '@heroicons/react/24/solid'
import Link from 'next/link'
import s from './style.module.css'
import { fetchDatasetDetail, fetchDatasetRelatedApps } from '@/service/datasets'
import type { RelatedApp, RelatedAppResponse } from '@/models/datasets'
import { getLocaleOnClient } from '@/i18n'
import AppSideBar from '@/app/components/app-sidebar'
import Divider from '@/app/components/base/divider'
import AppIcon from '@/app/components/base/app-icon'
import Loading from '@/app/components/base/loading'
import FloatPopoverContainer from '@/app/components/base/float-popover-container'
import DatasetDetailContext from '@/context/dataset-detail'
import { DataSourceType } from '@/models/datasets'
import useBreakpoints, { MediaType } from '@/hooks/use-breakpoints'
import { LanguagesSupported } from '@/i18n/language'
import { useStore } from '@/app/components/app/store'
import { AiText, ChatBot, CuteRobote } from '@/app/components/base/icons/src/vender/solid/communication'
import { Route } from '@/app/components/base/icons/src/vender/solid/mapsAndTravel'
export type IAppDetailLayoutProps = {
  children: React.ReactNode
  params: { datasetId: string }
}
type ILikedItemProps = {
  type?: 'plugin' | 'app'
  appStatus?: boolean
  detail: RelatedApp
  isMobile: boolean
}
const LikedItem = ({
  type = 'app',
  detail,
  isMobile,
}: ILikedItemProps) => {
  return (
    
      
        
        {type === 'app' && (
          
            {detail.mode === 'advanced-chat' && (
              
            )}
            {detail.mode === 'agent-chat' && (
              
            )}
            {detail.mode === 'chat' && (
              
            )}
            {detail.mode === 'completion' && (
              
            )}
            {detail.mode === 'workflow' && (
              
            )}
          
        )}
      
 
      {!isMobile && {detail?.name || '--'}
}
    
  )
}
const TargetIcon = ({ className }: SVGProps) => {
  return 
}
const TargetSolidIcon = ({ className }: SVGProps) => {
  return 
}
const BookOpenIcon = ({ className }: SVGProps) => {
  return 
}
type IExtraInfoProps = {
  isMobile: boolean
  relatedApps?: RelatedAppResponse
}
const ExtraInfo = ({ isMobile, relatedApps }: IExtraInfoProps) => {
  const locale = getLocaleOnClient()
  const [isShowTips, { toggle: toggleTips, set: setShowTips }] = useBoolean(!isMobile)
  const { t } = useTranslation()
  useEffect(() => {
    setShowTips(!isMobile)
  }, [isMobile, setShowTips])
  return 
    
    {(relatedApps?.data && relatedApps?.data?.length > 0) && (
      <>
        {!isMobile && 
{relatedApps?.total || '--'} {t('common.datasetMenus.relatedApp')}
}
        {isMobile && 
          {relatedApps?.total || '--'}
          
        }
        {relatedApps?.data?.map((item, index) => (
))}
      >
    )}
    {!relatedApps?.data?.length && (
      
            
           
        }
      >
        
      
    )}
  
}
const DatasetDetailLayout: FC = (props) => {
  const {
    children,
    params: { datasetId },
  } = props
  const pathname = usePathname()
  const hideSideBar = /documents\/create$/.test(pathname)
  const { t } = useTranslation()
  const media = useBreakpoints()
  const isMobile = media === MediaType.mobile
  const { data: datasetRes, error, mutate: mutateDatasetRes } = useSWR({
    url: 'fetchDatasetDetail',
    datasetId,
  }, apiParams => fetchDatasetDetail(apiParams.datasetId))
  const { data: relatedApps } = useSWR({
    action: 'fetchDatasetRelatedApps',
    datasetId,
  }, apiParams => fetchDatasetRelatedApps(apiParams.datasetId))
  const navigation = [
    { name: t('common.datasetMenus.documents'), href: `/datasets/${datasetId}/documents`, icon: DocumentTextIcon, selectedIcon: DocumentTextSolidIcon },
    { name: t('common.datasetMenus.hitTesting'), href: `/datasets/${datasetId}/hitTesting`, icon: TargetIcon, selectedIcon: TargetSolidIcon },
    // { name: 'api & webhook', href: `/datasets/${datasetId}/api`, icon: CommandLineIcon, selectedIcon: CommandLineSolidIcon },
    { name: t('common.datasetMenus.settings'), href: `/datasets/${datasetId}/settings`, icon: Cog8ToothIcon, selectedIcon: Cog8ToothSolidIcon },
  ]
  useEffect(() => {
    if (datasetRes)
      document.title = `${datasetRes.name || 'Dataset'} - Dify`
  }, [datasetRes])
  const setAppSiderbarExpand = useStore(state => state.setAppSiderbarExpand)
  useEffect(() => {
    const localeMode = localStorage.getItem('app-detail-collapse-or-expand') || 'expand'
    const mode = isMobile ? 'collapse' : 'expand'
    setAppSiderbarExpand(isMobile ? mode : localeMode)
  }, [isMobile, setAppSiderbarExpand])
  if (!datasetRes && !error)
    return 
  return (
    
      {!hideSideBar && 
 }
        iconType={datasetRes?.data_source_type === DataSourceType.NOTION ? 'notion' : 'dataset'}
      />}
       mutateDatasetRes(),
      }}>
        {children}